草庐IT

c++ - IOCP C++ TCP 客户端

全部标签

go - 使用go语言创建异步tcp服务器

我想启动一个监听特定端口的服务器并进行一些异步计算并返回结果。任何线索都将不胜感激。 最佳答案 在开始提问之前,请使用google搜索此类内容。无论如何你可以在这里找到一个例子。https://gist.github.com/iwanbk/2295255 关于go-使用go语言创建异步tcp服务器,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/18582888/

ssh - 通过 Tor 网络访问 ssh 客户端

我有一个在一台机器上运行的openSSH服务器,一台远程机器可以使用一个用go编写的应用程序在上面写入文件。SSH相当安全,尽管我知道torssh服务器,如果我使用它会增加额外的安全性。我很困惑这里的场景是什么?就像在tor网络上运行两台机器一样简单吗?我一直在阅读并看到this其中opensshd仅监听127.0.0.1端口22,然后必须运行隐藏服务到22127.0.0.1:22。如果我正确理解了这个,我是否只需要ssh------.onion-luser?任何人都可以阐明这一点吗? 最佳答案 Tor公开了一个SOCKS接口(in

tcp - Google Go EOF 使用 Read() 从连接读取

我正在尝试使用GoogleGo语言创建一个简单的TCP服务器。我有一个指向127.0.0.1:8484的客户端。当我的服务器代码尝试读取缓冲区时,我在第37行收到EOF错误。客户端发送一个初始tcp数据包,表示其客户端版本和其他设置(客户端来自游戏,因此我知道我做错了什么)。我正在尝试阅读此数据包。但是,似乎我调用读取为时已晚,客户端已经发送了数据包并正在等待其响应。任何帮助将不胜感激,因为我真的很困惑。packagemainimport("fmt""net""os")funcmain(){service:=":8484"listener,err:=net.Listen("tcp",s

go - HTTP 客户端,空闲超时

如何在GoHTTP客户端中设置空闲超时?空闲超时是指从HTTP客户端内部调用Conn接口(interface)的读/写方法时超时。当客户端下载文件并且在某些时刻由于达到读取超时而导致下载失败时,它会很有用。 最佳答案 您需要创建自己的net.Dialer,它返回一个net.Conn,它设置了适当的读写截止时间。Conn看起来像这样://Connwrapsanet.Conn,andsetsadeadlineforeveryread//andwriteoperation.typeConnstruct{net.ConnReadTimeou

sockets - 如何找到 IP :Port of incoming client in TCP Connection

收到来自conn,err:=listener.Accept()的连接后,我想在conn的另一端找到客户端的地址。我已经尝试使用conn.LocalAddr()和conn.RemoteAddr()(Documentation)来执行此操作。.LocalAddr()只是给出服务器进程的地址。.RemoteAddr()为客户端提供了正确的IP,但与我所知道的客户端绑定(bind)的端口号截然不同。如果它有什么不同,我用在同一台机器上运行的两个独立进程来做这件事。一个是客户端,一个是服务器。关于如何找到客户端的正确IP:Port的任何想法?我是要使用LocalAddr还是RemoteAddr?

go - 在 Go 中作为客户端从服务器获取 EOF

我有一些用于自定义协议(protocol)的Go客户端。该协议(protocol)是lz4压缩的JSON-RPC,带有给出压缩JSON长度的四字节header。funcReceiveMessage(connnet.Conn)([]byte,error){start:=time.Now()bodyLen:=0body:=make([]byte,0,4096)buf:=make([]byte,0,256)forbodyLen==0||len(body)4{header:=body[:4]body=body[:4]bodyLen=int(unpack(header))}n,err:=conn

具有不同超时的 Golang goroutine-safe http 客户端?

假设我有以下功能:funcSendRequest(c*Client,timeouttime.Duration){iftimeout>0{c.Timeout=timeout}else{c.Timeout=defaultTimeout}...}我想允许多个go-routines调用这个函数(共享同一个HTTP客户端),但是这样写显然不能保证goroutine的安全。(同时更改传入的客户端超时也很奇怪......)我不确定执行此操作的最佳方法是什么。我应该为不同的超时使用不同的客户端吗?我应该使用一些互斥量吗?或者一般来说,我如何共享具有不同超时的HTTP客户端?谢谢!

sockets - 没有可用的缓冲区空间(tcp.cpp :69) when setting SNDBUF and RCVBUF ZeroMQ, golang,MacOSX

我在MacOSX上使用brew安装了zeromq:stable4.1.4,并编写了一个简单的PUB/SUB程序来测试zeromq。但是当我使用标志--bufsize>5运行示例程序时(使用大小>5MB的缓冲区)(去运行go_zmq_pubsub.go--bufsize=6);它抛出以下异常:没有可用的缓冲区空间(tcp.cpp:69)SIGABRT:中止PC=0x7fff9911c286m=0cgo执行时信号到达下面是我用来测试zeromq4.x的程序packagemainimport("fmt""flag""strconv""sync"log"github.com/Sirupsen/

go - 无法使用 dart 和 angular 2 客户端运行 Golang 后端

我用这个tutorial使用GoLang、Angular2和Dart制作Web应用程序,但是当我通过控制台命令“后端”启动后端,并在浏览器中路由到“localhost:8080/”时,它必须调用Dart类“Hello”中的方法,但它不会打电话,我收到404错误。我从教程中获得的所有代码都没有改变任何东西。而且我找不到任何其他教程。你能解释一下我做错了什么吗?Go语言代码:funcmain(){http.Handle("/",http.FileServer(http.Dir("./app/web/")))fmt.Println("Text")http.HandleFunc("/api/h

go - TCP `net.Conn.Read` 在使用 `encoding/gob` 解码器后挂起

我可以用encoding/goben/decoder包裹TCPnet.Conn的末端,并通过它成功地en/decode一个值,但是如果我遵循在卡在Read上的原始连接上使用Read进行Decode:packagemainimport("encoding/gob""net""log""sync")funcmain(){varwgsync.WaitGroupaddr:=&net.TCPAddr{IP:net.ParseIP("127.0.0.1"),Port:9000}ready:=make(chanstruct{})wg.Add(1)gofunc(){deferwg.Done()ln,e